GetAxisByIndex
从轴取得资讯。
Syntax
KsError GetAxisByIndex(
int Index,
SlaveStatus* Details,
int* Resolution,
DWORD* InputVariables,
DWORD* OutputVariables
);
参数
Index:轴的索引。索引以 0 为起始;别名将影响此参数。
Details:指示用以接收轴资讯的 SlaveStatus 结构。
Resolution:轴的编码器解析度。解析度取决于 ESI 资料库中的 Resolution object。若 Resolution object 被选取,则解析度来自于储存于物件中的值;若 Resolution object 未选取,则解析度将套用 ESI 资料库中的 Default Resolution 设定值。
InputVariables:PDO 数据中可用的输入变数。下表列出 InputVariables 的位元遮罩。
OutputVariables:PDO 数据中可用的输出变数。下表列出 OutputVariables 的位元遮罩。
InputVariables 的位元遮罩
十六进制位元遮罩 | 变数 |
---|---|
0x1 | VAR_STATUS_WORD |
0x2 | VAR_ACTUAL_POSITION |
0x4 | VAR_SECOND_ENCODER |
0x8 | VAR_ACTUAL_VELOCITY |
0x10 | VAR_ACTUAL_TORQUE |
0x20 | VAR_TOUCH_PROBE_STATUS |
0x40 | VAR_MOP_DISPLAY |
0x80 | VAR_AXIS_INPUTS |
OutputVariables 的位元遮罩
十六进制位元遮罩 | 变数 |
---|---|
0x1 | VAR_CONTROL_WORD |
0x2 | VAR_TARGET_POSITION |
0x4 | VAR_TARGET_VELOCITY |
0x8 | VAR_TARGET_TORQUE |
0x10 | VAR_TORQUE_OFFSET |
0x20 | VAR_TOUCH_PROBE_CONTROL |
0x40 | VAR_MOP |
0x80 | VAR_AXIS_OUTPUTS |
回传值
若此函式执行成功,会回传 errNoError
,否则会传回错误码。如需更多有关错误码的资讯,请参阅 KsError 清单。
备注
取得轴与其编码器解析度明细。KINGSTAR 子系统启动后使用。
可用的 EtherCAT 状态
ecatOP
范例
复制
SlaveStatus slaveStatus = { 0 };
int resolution = 0;
DWORD InputVar = 0, OutputVar = 0;
nRet = GetAxisByIndex(0, &slaveStatus, &resolution, &InputVar, &OutputVar);
if (nRet == errNoError)
{
// Check the slave information in the SlaveStatus structure.
RtPrintf("Axis 0 %s: Vendor 0x%x, Product 0x%x, Revision 0x%x, Serial 0x%x\n",
slaveStatus.Name, slaveStatus.VendorId, slaveStatus.ProductCode,
slaveStatus.RevisionNumber, slaveStatus.SerialNumber);
RtPrintf("Address: Auto %d, Fixed %d, Alias %d\n",
slaveStatus.SlaveId, slaveStatus.PhysAddress, slaveStatus.AliasAddress);
RtPrintf("PDO: Input len %d, Output len %d, Index offset 0x%x\n",
slaveStatus.InputLength, slaveStatus.OutputLength, slaveStatus.VariableIndexOffset);
RtPrintf("State %d, Cycle time %d\n", slaveStatus.State, slaveStatus.CycleTime);
// Use defined bit mask to check if desired variables are in the PDO data.
if ((InputVar & VAR_MOP_DISPLAY) == VAR_MOP_DISPLAY) {
BYTE mopDisplay = 0;
nRet = ReadAxisMopDisplay(0, &mopDisplay);
if (mopDisplay != 8 && (OutputVar & VAR_MOP) == VAR_MOP) {
nRet = WriteAxisMop(0, 8);
}
}
}
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.0 | 4.0 |
标头档 | ksapi.h | ksapi.h |
程式库 | KsApi_Rtss.lib | KsApi.lib |
参见